Unity开发踩坑 |
您所在的位置:网站首页 › unity特效培训 价格 › Unity开发踩坑 |
开游戏开发中,会常常遇到用粒子特效来制作技能特效,子弹特效,或者装备特效等。 但是对于初学者来说常常会遇到如果屏幕出现大量同一个特效时,会遇到性能的问题不知道怎么优化。 今天我就来举个例子带着大家一起尝试优化出现大批量例子特效之后遇到的性能问题: 例如:我们在游戏中有一个例子特效 这个特效采用3种不同的材质球如下: 由图可以看出当前的三个粒子对应了三个不同的 DrawTransparentObjects 透明对象:由于我们材质球采用的是SurfaceType是 transparent 所以在渲染绘制时 处于 DrawTransparentObjects这个层级。 由上图可以很明显的看出: 虽然我们都是一模一样的例子特效,由于我们复制了23份出来 那么渲染帧调试器的透明对象,比最初多了很多很多。 这是不符合,我们优化时的规律的:同一个材质球,在渲染时,竟可能全部合批处理 这时候细心的同学可能会问,复制了23分 +最开始的一份 = 24*3=72个 DrawTransparentObjects,为什么图中只有60 疑,渲染帧中怎么出现了Draw Dynamic?
重点:其实在调试渲染帧调试器时,不管是粒子特效,还是模型对象,优化的思路都一样,就是要将同一材质的对象,想办法放一块(也就是将渲染层级调到一起),那么URP在做渲染时,就会自动将相同材质球的内容给我们优化掉。 我们没有调整粒子特效的渲染层级时,三个粒子的渲染层级都是0,那么在绘制时,就是按照顺序往下绘制,正好我们三个材质球的顺序都是 1 2 3这样隔开的,所以相同的材质球没办法在一块,我们就需要手动调整粒子的渲染层级(模型的优化原理也一样) 对于什么URP在渲染时,时按照这样的顺序来的,我这儿要推荐一个unity官方视频讲解 引擎底层的渲染逻辑内容: 00:25:50 《SRP底层渲染流程及原理》by Unity高级解决方案工程师 李中元 该视频看了之后再看我这篇文章,就很容易秒懂。 但是有一点得注意:URP中相同材质球合批处理了 不是说我们真实的drawcall就降低了 我们可以看到 单个里面的drawcall 是24 另外三个也是24*3 = 72 如下图所示:URP是通过减少每一帧中,CBFFER环境的数量来提升优化,也就是说,在一帧里面,渲染同一个材质球的24个drawcall打包一起,传入到了GPU。前提的是SRP Batch开关要开启。 如何打开:SRP Batch的开关,找到UniversalRenderPipelineAsset文件如下图 如果需要深入理解URP里面的内容可以看UNITY官方的教程 https://blog.unity.com/technology/srp-batcher-speed-up-your-rendering 本次结束到这儿,喜好的朋友麻烦点一健三连,谢谢。 UNIYT技术交流群 QQ群:68356214 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |